<?php
/**
 * * * * * * * * * * LICENCIA * * * * * * * * * * * * * * * * * * * * *

Copyright(C) 2012
Instituto Universtiario de Tecnología Dr. Federico Rivero Palacio

Este programa es Software Libre y usted puede redistribuirlo y/o modificarlo
bajo los términos de la versión 3.0 de la Licencia Pública General (GPLv3)
publicada por la Free Software Foundation (FSF), es distribuido sin ninguna
garantía. Usted debe haber recibido una copia de la GPLv3 junto con este
programa, sino, puede encontrarlo en la página web de la FSF, 
específicamente en la dirección http://www.gnu.org/licenses/gpl-3.0.html

 * * * * * * * * * * ARCHIVO * * * * * * * * * * * * * * * * * * * * *

Nombre: LoginControlador.clase.php
Diseñador: johan Alamo
Programador: Geraldine Castillo (geitha_19@hotmail.com)
Fecha: Febrero 2013
Descripción:  
	Este es el controlador del módulo Login, permite manejar las operaciones relacionadas 
	con los datos del logueo (iniciar , mostrar , cerrar), es el intermediario entre la
	base de datos y la vista. 

 * * * * * * * * Cambios/Mejoras/Correcciones/Revisiones * * * * * * * *
Diseñador - Programador /   Fecha   / Descripción del cambio
---                         ----      ---------

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/

/*Objeto Instituto*/
require_once "negocio/Login.clase.php";
/* Clase que permite la comunicación con la base de datos*/
require_once "modulos/login/modelo/LoginServicio.clase.php";
require_once "modulos/login/modelo/Sesion.clase.php";

class LoginControlador {
	
	
	/** Método público  que le da inicio al módulo login. que 	llama 	a las funciones 
	*   configurar()  y manejarRequerimiento() .
	*/
	public static function iniciar(){
		self::configurar();
		self::manejarRequerimiento();
	}
	
	
/*****************************************************************************************/	
	/* método público que permite efectuar toda la configuración del módulo login. Permite asignar
	 * el css que se utilizarán en el módulo login.
	 * */
	private static function configurar(){
		global $gbVista;
		if ($gbVista->obtenerFormato() == "html5"){
		//	$gbVista->agregarJavascript("modulos/login/vista/html5/javascript/Login.js");
			$gbVista->agregarCSS("modulos/login/vista/html5/CSS/Login.css");
		}
	}
	 
/************************************************************************************/

		/*Método que permite manejar el requerimiento (o acción) indicado por
	 * el usuario según su petición
	 * Acciones:
		mostrar: muestra toda la información de un logeo		
		Cada acción será redireccionada a un método que la procesa para 
		mayor orden
		
		Resumen de acciones:
		Mostrar: esta acción mostrará la pantalla de logueo.
		Iniciar: esta acción permite iniciar el logueo de un usuario.
		Cerrar: esta acción permite cerrar la sesión iniciada. 	
	 */
	public static function manejarRequerimiento(){
		
		$accion = PostGet::obtenerPostGet('m_accion');
		//permite colocar una acción predefinida en caso de no colocarla
		if (!$accion)
			$accion = 'mostrar';
				
		if($accion == 'mostrar'){
			self::mostrarLogin();		
		}elseif($accion == 'iniciar'){
			self::iniciarLogin();	
		}elseif($accion == 'cerrar'){
			self::cerrarLogin();
		}			
		else
			echo "Acci&oacute;n no v&aacute;lida en el m&oacute;dulo Login: $accion";	
	}
	
/************************************************************************************************************/

	/* método público  que permite extraer en un objeto tipo Login toda la información de un usuario (Usuario, 
	 * apellido,tipo,codigo ) de la base de datos . Recibe los datos desde la vista (arreglo PostGet). 	De ser
	 * satisfactoria la autenticación los datos del usuario se guardarán en la variable de session  a través de
	 * la clase que contiene solo métodos estáticos Sesion ejemplo: Sesion::asignarNombre(nombre del usuario). 
	 * En caso de error se llamará a la función estática mostrarLogin la cual enviará a la pantalla de logueo.
	*/
	
	public static function iniciarLogin(){		
		global $gbVista;
		$cedula = PostGet::obtenerPostGet('login');
		$clave = PostGet::obtenerPostGet('passwd');
		$tipo =PostGet::obtenerPostGet('tipo');
		$login = LoginServicio::obtenerLogin($cedula,$clave,$tipo);
		
		if($login) {
			Sesion::asignarTipoUsuario($tipo);		
			Sesion::asignarApellido($login->obtenerApellido());
			Sesion::asignarNombre($login->obtenerNombre());
			Sesion::asignarCodigo($login->obtenerCodigo());
			//reiniciar la aplicación con una sesión iniciada, 
			//se tomarán el módulo predeterminado en PrincipalControlador			
			header ("location: index.php" );
		}else{ //en caso de falla en los datos de autenticación se redirecciona 
				//a LoginMostrar(pedir datos de autenticación)
			$gbVista->asignarDato("usuarioIncorrecto",true);
			//reasignar la vista de petición de datos
			$gbVista->asignarVista("LoginMostrar");
			self::mostrarLogin();
		}
	}

/***************************************************************************************/
		
	/* Método público que permite mostrar la vista 	mediante la cual se pedirán los datos 
	 * de autenticación de usuario.
	 * */
	 
	public static function mostrarLogin(){				
		global $gbVista;
			//var_dump($_POST);	
		//$gbVista->asignarVista("LoginMostrar");		
		$gbVista->mostrar();				
	}
	
/************************************************************************************************/	

	/* Método público que permite cerrar una sesion; lo hace a 	través de la clase Sesion ejemplo 
	 * Sesion::cerrarSesion(). Luego de cerrar la sesión redireccionará al index de la aplicación. 
	*/
	
	public static function cerrarLogin(){
		
		global $gbVista;
		Sesion::cerrarSesion();
		//$gbVista->asignarDato("exito",true);
		//asigna la vista encargada de mostrar la data
		header ("location: index.php" );		
		//$gbVista->mostrar();
	}
}
?>

